package com.atguigu.gmall.product.controller;

import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.product.entity.BaseTrademark;
import com.atguigu.gmall.product.service.BaseTrademarkService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * ClassName: BaseTrademarkController
 * Package: com.atguigu.gmall.product.controller
 * Description:
 *
 * @Author ltystart
 * @Create 2025/8/20 15:39
 * @Version 1.0
 */
@Api(tags = "品牌接口")
@RestController
@RequestMapping("/admin/product")
public class BaseTrademarkController {
    @Autowired
    private BaseTrademarkService baseTrademarkService;

    /**
     * 获取品牌分页列表
     *
     * @param pn
     * @param ps
     * @return
     */
    @ApiOperation("获取品牌分页列表")
    @GetMapping("/baseTrademark/{pn}/{ps}")
    public Result getPageList(@PathVariable("pn") Long pn, @PathVariable("ps") Long ps) {
        Page<BaseTrademark> page = new Page<>(pn, ps);
        //分页查询
        Page<BaseTrademark> result = baseTrademarkService.page(page);
        return Result.ok(result);
    }

    /**
     * 添加品牌
     *
     * @param baseTrademark
     * @return
     */
    @ApiOperation("添加品牌")
    @PostMapping("/baseTrademark/save")
    public Result saveTrademark(@RequestBody BaseTrademark baseTrademark) {
        baseTrademarkService.save(baseTrademark);
        return Result.ok();
    }

    /**
     * 删除品牌
     * 405请求方式不允许（请求路径和分页的完全格式一致，Springmvc准备用分页处理这个请求）
     * 但是GET和DELETE又没匹配上，所以405
     * 响应状态码？200,404,405,503
     * 而不是404
     *
     * @param id
     * @return
     */
    @ApiOperation("删除品牌")
    @DeleteMapping("/baseTrademark/remove/{id}")
    public Result remove(@PathVariable("id") Long id) {
        baseTrademarkService.removeById(id);
        return Result.ok();
    }

    /**
     * 查询指定的品牌信息，要在页面回显
     * http://192.168.200.1/admin/product/baseTrademark/get/16
     * 400 BadRequest请求方式GET请求路径/baseTrademark/get/16完全匹配到分页上了
     * 但是参数类型转化出现问题。400请求参数传递的不对，服务器无法转换使用
     * 4xx:全部前端问题404, 400
     * 5xx:全部后台问题
     *
     * @param id
     * @return
     */
    @ApiOperation("查询指定的品牌信息")
    @GetMapping("/baseTrademark/get/{id}")
    public Result getBaseTrademark(@PathVariable("id") Long id) {
        BaseTrademark baseTrademark = baseTrademarkService.getById(id);
        return Result.ok(baseTrademark);
    }

    /**
     * 修改品牌
     *
     * @param baseTrademark
     * @return
     */
    @ApiOperation("修改品牌")
    @PutMapping("/baseTrademark/update")
    public Result update(@RequestBody BaseTrademark baseTrademark) {
        baseTrademarkService.updateById(baseTrademark);
        return Result.ok();
    }

    /**
     * 获取所有品牌
     *
     * @return
     */
    @ApiOperation("获取所有品牌")
    @GetMapping("/baseTrademark/getTrademarkList")
    public Result getTrademarkList() {
        List<BaseTrademark> list = baseTrademarkService.list();
        return Result.ok(list);
    }
}
